package junior.util.function;

import junior.util.exception.ExceptionUtils;

import java.util.function.Function;

/**
 * 将Exception转换为CheckedException的Function
 * @author WuBo
 * @date 2019年11月20日
 * @param <R>
 * @param <T>
 */
@FunctionalInterface
public interface CheckedFunction<R, T> extends Function<R, T> {

	@Override
	default T apply(R t) {
		try {
			return applyThrows(t);
        } catch (final Exception e) {
            throw ExceptionUtils.wrap2Runtime(e);
        }
	}
	
	T applyThrows(R t) throws Exception;
}
